The Policy Engine adapter integrates IAP with the Policy Engine service, and is required for app-policy_manager to operate.
Verify Policy Engine Service is Running
To ensure the policy engine service is running, consult the Itential Policy Engine admin guide.
Adapter Configuration
To setup the policy engine adapter:
Update the
service_config
properties for Policy Engine with the following parameters.Parameter Description host
Specifies the hostname of your Policy Engine instance. port
Specifies the port of your Policy Engine instance. base_path
Specifies the base path for the Policy Engine API. If the service is running directly on the host/port above, this should be /api
.version
Specifies the API version that adapter-policy_engine should use. This should be set to v1
.cache_location
Specifies where results should be cached. Must be redis
,local
, ornone
. Recommendnone
.protocol
Specifies which protocol to use when communicating with your Policy Engine instance. Must be http
orhttps
.authentication
An object describing the authentication mechanism for Policy Engine. See below for details. healthcheck
An object describing the healthcheck policy for the service. See below for details. ssl
SSL settings for the service if you have configured SSL in your Policy Engine installation. See below for details. proxy
Useful setting if Policy Engine is hosted behind an HTTP proxy (not a reverse proxy or load balancer). See below for details. The Policy Engine adapter does not serve as a broker. Verify the
brokers
field is an empty array.{ "properties": { "brokers": [] } }
Authentication
The following properties are used to define the authentication process to Policy Engine.
Note: Depending on the method that is used to authenticate with Policy Engine, you may not need to set all of the authentication properties.
Property | Description |
---|---|
auth_method |
Required. Used to define the type of authentication currently supported. Authentication methods currently supported are: basic user_password , static_token , request_token , and no_authentication . |
username |
Used to authenticate with Policy Engine on every request or when pulling a token that will be used in subsequent requests. |
password |
Used to authenticate with Policy Engine on every request or when pulling a token that will be used in subsequent requests. |
auth_field |
Defines the request field the authentication (e.g., tokens are basic auth credentials) needs to be placed in order for the calls to work. |
auth_field_format |
Defines the format of the auth_field. See examples below. Items enclosed in {} inform the adapter to perform an action prior to sending the data. It may be to replace the item with a value or it may be to encode the item. |
token |
Defines a static token that can be used on all requests. Only used with static_token as an authentication method (auth_method). |
invalid_token_error |
Defines the HTTP error that is received when the token is invalid. Notifies the adapter to pull a new token and retry the request. Default is 401. |
token_timeout |
Defines how long a token is valid. Measured in milliseconds. Once a dynamic token is no longer valid, the adapter has to pull a new token. If the token_timeout is set to -1, the adapter will pull a token on every request to Policy Engine. If the timeout_token is 0, the adapter will use the expiration from the token response to determine when the token is no longer valid. |
token_cache |
Used to determine where the token should be stored (local memory or in Redis). |
auth_field examples
"header.headers.X-AUTH-TOKEN",
"header.headers.Authorization",
"header.auth",
"body.token",
"url"
auth_field_format examples
"{token}",
"Token {token}",
"{username}:{password}",
"Basic {b64}{username}:{password}{/b64}",
"token={token}"
Proxy
The proxy section defines the properties to utilize when Policy Engine is behind a proxy server.
Property | Description |
---|---|
enabled |
Required. Default is false. If Policy Engine is behind a proxy server, set enabled flag to true. |
host |
Host information for the proxy server. Required if enabled is true. |
port |
Port information for the proxy server. Required if enabled is true. |
protocol |
The protocol (i.e., http, https, etc.) used to connect to the proxy. Default is http. |
Healthcheck
The healthcheck properties define the API that runs the healthcheck to tell the adapter that it can reach Policy Engine. There are currently three types of health checks.
- None - Not recommended. Adapter will not run a healthcheck. Consequently, unable to determine before making a request if the adapter can reach Policy Engine.
- Startup - Adapter will check for connectivity when the adapter initially comes up, but it will not check afterwards.
- Intermittent - Adapter will check connectivity to Policy Engine at a frequency defined in the
frequency
property.
Property | Description |
---|---|
type |
Required. The type of healthcheck to run. |
frequency |
Required if intermittent. Defines how often the health check should run. Measured in milliseconds. Default is 300000. |
We recommend an intermittent healthcheck every 300 seconds. As in:
{ "type": "intermittent", "frequency": 300000 }
SSL
The SSL section defines the properties utilized for SSL authentication with Policy Engine. SSL can work two different ways: set the accept_invalid_certs
flag to true (only recommended for lab environments), or provide a ca_file
.
Property | Description |
---|---|
enabled |
If SSL is required, set to true. |
accept_invalid_certs |
Defines if the adapter should accept invalid certificates (only recommended for lab environments). Required if SSL is enabled. Default is false. |
ca_file |
Defines the path name to the CA file used for SSL. If SSL is enabled and the accept invalid certifications is false, then ca_file is required. |
secure_protocol |
Defines the protocol (e.g., SSLv3_method ) to use on the SSL request. |
ciphers |
Required if SSL enabled. Specifies a list of SSL ciphers to use. |
secure_protocol examples
"SSLv3_method"
"TLS_method"
"TLSv1_method"
"TLSv1_1_method"
"TLSv1_2_method"
ciphers
A colon (:
) separated list of acceptable ciphers.
Some example values:
"DHE-RSA-AES256-SHA"
"ECDHE-RSA-AES128-GCM-SHA256"
"ECDHE-RSA-AES256-GCM-SHA384"
"DHE-RSA-AES128-SHA256"
"DHE-RSA-AES256-SHA384"
"ECDHE-RSA-AES256-SHA256"